<?php
/**
 * @author 		: Sergio Martínez
 * @copyright 	: 28-07-2012
 * @todo 		: Modelo base de Listado
 * @version 	: 2.0
 */
class listado extends DB {
	
	public function obtenerUbicaciones() {
		$arr_ubicaciones = array();
		$sql = "SELECT * FROM ubicaciones ORDER BY nombre ASC";
		$resultado = mysql_query($sql);
		while ($row = mysql_fetch_array($resultado)) {
			$arr_ubicaciones[] = array(
				"id" => $row['id'],
				"nombre" => htmlentities($row['nombre']),
				"pertenece" => $row['pertenece_a']
			);
		}
		return json_encode($arr_ubicaciones);
	}
	public function obtenerPropiedadesPorCodigo($codigo) {
		function datosNecesarios($tipo,$query) {
			$tipo_operacion = array(
				0 => "-",
				1 => "Venta",
				2 => "Alquiler",
				3 => "Reservado",
				4 => "Vendido",
				5 => "Alquilado",
				6 => "Suspendido"
			);
			
			$tipo_inmueble = array(
				array("campo","Campo"),
				array("casa","Casa"),
				array("cochera","Cochera"),
				array("departamento","Departamento"),
				array("edificio","Edificio"),
				array("fondo_de_comercio","Fondo de comercio"),
				array("galpon","Galpón"),
				array("local","Local"),
				array("oficina","Oficina"),
				array("ph","PH"),
				array("quinta","Quinta"),
				array("terreno","Terreno")
			);
			$result = mysql_query($query);
			$arr_result = array();
			$i=0;
			while ($reg = @mysql_fetch_array($result)) {
				$arr_result[$i]["id"] = (int)$reg["id"];
				$arr_result[$i]["tipo_inmueble"] = $tipo_inmueble[$tipo];
				$arr_result[$i]["calle"] = $reg["calle"];
				$arr_result[$i]["altura"] = (int)$reg["altura"];
				$arr_result[$i]["imagen"] = $reg["url"];
				$arr_result[$i]["tipo_cambio"] = (int)$reg["tipo_cambio"];
				$arr_result[$i]["precio"] = round((float)$reg["precio"],2);
				$arr_result[$i]["cantidad_ambientes"] = (int)$reg["cantidad_ambientes"];
				$arr_result[$i]["tipo_operacion"] = $tipo_operacion[(int)$reg["tipo_operacion"]];
				$arr_result[$i]["informacion_adicional"] = $reg["informacion_adicional"];
				$arr_result[$i]["fecha_publicacion"] = (int)$reg["fecha_publicacion"];
				$arr_result[$i]["ubicacion"] = htmlentities($reg["locacion"] ." / ". $reg["region"]);
				$i++;
			}
			return $arr_result;
		}
		function gen_query($tabla,$tipo,$codigo) {
			$query = "SELECT c.id, (SELECT url FROM imagenesxinmueble WHERE fk_id_inmueble = c.id AND tipo_inmueble = ".$tipo." AND orden = 1) 'url', c.calle, c.altura, c.informacion_adicional, c.tipo_cambio,c.precio,c.cantidad_ambientes, c.tipo_operacion, c.fecha_publicacion, u.nombre 'locacion', (SELECT nombre FROM ubicaciones WHERE id = u.pertenece_a) 'region' FROM ".$tabla." c, ubicaciones u WHERE c.fk_id_ubicacion = u.id AND c.codigo LIKE '%".$codigo."%'ORDER BY c.fecha_publicacion DESC;";
			return $query;
		}
		$querycampo = gen_query("campos",1,$codigo);
		$querycasa = gen_query("casas",2,$codigo);
		$querycochera = gen_query("cocheras",3,$codigo);
		$querydeptos = "SELECT d.id, (SELECT url FROM imagenesxinmueble WHERE fk_id_inmueble = d.id AND tipo_inmueble = 4 AND orden = 1) 'url', c.calle,  c.altura, d.informacion_adicional, d.tipo_cambio,d.precio,d.cantidad_ambientes, d.tipo_operacion, d.fecha_publicacion, u.nombre 'locacion', (SELECT nombre FROM ubicaciones WHERE id = u.pertenece_a) 'region' FROM departamentos d, ubicaciones u, edificios c WHERE c.fk_id_ubicacion = u.id AND d.fk_id_edificio = c.id AND d.codigo LIKE '%".$codigo."%' ORDER BY d.fecha_publicacion DESC;";
		$queryfondo_comercio = gen_query("fondo_comercios",6,$codigo);
		$querygalpon = gen_query("galpones",7,$codigo);
		$querylocal = gen_query("locales",8,$codigo);
		$queryoficina = gen_query("oficinas",9,$codigo);
		$queryph = gen_query("ph",10,$codigo);
		$queryquinta = gen_query("quintas",11,$codigo);
		$queryterreno = gen_query("terrenos",12,$codigo);
		
		$arr_campos = datosNecesarios(0,$querycampo);
		$arr_casas = datosNecesarios(1,$querycasa);
		$arr_cocheras = datosNecesarios(2,$querycochera);
		$arr_deptos = datosNecesarios(3,$querydeptos);
		$arr_fondo_comercios = datosNecesarios(5,$queryfondo_comercio);
		$arr_galpones = datosNecesarios(6,$querygalpon);
		$arr_locales = datosNecesarios(7,$querylocal);
		$arr_oficinas = datosNecesarios(8,$queryoficina);
		$arr_phs = datosNecesarios(9,$queryph);
		$arr_quintas = datosNecesarios(10,$queryquinta);
		$arr_terrenos = datosNecesarios(11,$queryterreno);
			
		$propiedades = array_merge_recursive($arr_campos,$arr_casas,$arr_cocheras,$arr_deptos,$arr_fondo_comercios,$arr_galpones,$arr_locales,$arr_oficinas,$arr_phs,$arr_quintas,$arr_terrenos);
		function cmp($a, $b) {
		    if ($a["fecha_publicacion"] == $b["fecha_publicacion"]) {
		        return 0;
		    }
		    return ($a["fecha_publicacion"] > $b["fecha_publicacion"]) ? -1 : 1;
		}
		
		usort($propiedades, "cmp");
		return $propiedades;
	}
	
	public function obtenerPropiedades($filtros) {
		
		function datosNecesarios($tipo,$query) {
			$tipo_operacion = array(
				0 => "-",
				1 => "Venta",
				2 => "Alquiler",
				3 => "Reservado",
				4 => "Vendido",
				5 => "Alquilado",
				6 => "Suspendido"
			);
			
			$tipo_inmueble = array(
				array("campo","Campo"),
				array("casa","Casa"),
				array("cochera","Cochera"),
				array("departamento","Departamento"),
				array("edificio","Edificio"),
				array("fondo_de_comercio","Fondo de comercio"),
				array("galpon","Galpón"),
				array("local","Local"),
				array("oficina","Oficina"),
				array("ph","PH"),
				array("quinta","Quinta"),
				array("terreno","Terreno")
			);
			$result = mysql_query($query);
			$arr_result = array();
			$i=0;
			while ($reg = @mysql_fetch_array($result)) {
				$arr_result[$i]["id"] = (int)$reg["id"];
				$arr_result[$i]["tipo_inmueble"] = $tipo_inmueble[$tipo];
				$arr_result[$i]["calle"] = $reg["calle"];
				$arr_result[$i]["altura"] = (int)$reg["altura"];
				$arr_result[$i]["imagen"] = $reg["url"];
				$arr_result[$i]["tipo_cambio"] = (int)$reg["tipo_cambio"];
				$arr_result[$i]["precio"] = round((float)$reg["precio"],2);
				$arr_result[$i]["cantidad_ambientes"] = (int)$reg["cantidad_ambientes"];
				$arr_result[$i]["tipo_operacion"] = $tipo_operacion[(int)$reg["tipo_operacion"]];
				$arr_result[$i]["informacion_adicional"] = $reg["informacion_adicional"];
				$arr_result[$i]["fecha_publicacion"] = (int)$reg["fecha_publicacion"];
				$arr_result[$i]["ubicacion"] = htmlentities($reg["locacion"] ." / ". $reg["region"]);
				$i++;
			}
			return $arr_result;
		}

		$criterios = "";
		if ($filtros["op"]>0) $criterios .= " AND c.tipo_operacion={$filtros['op']}";
		if (($filtros["desde"]>0) && ($filtros["hasta"]>0)) {
			$criterios .= " AND c.precio BETWEEN {$filtros['desde']} AND {$filtros['hasta']}";
		} else {
			if ($filtros["desde"]>0) $criterios .= " AND c.precio>={$filtros['desde']}";
			if ($filtros["hasta"]>0) $criterios .= " AND c.precio<={$filtros['hasta']}";
		}
		//if ($filtros["cambio"]>0) $criterios .= " AND c.tipo_cambio={$filtros['cambio']}";
		if ($filtros["locacion"]>0) {
			if (($filtros["locacion"] == 3) || ($filtros["locacion"] == 296) || ($filtros["locacion"] == 284) || ($filtros["locacion"] == 270) || ($filtros["locacion"] == 173) || ($filtros["locacion"] == 77)) $criterios .= " AND u.pertenece_a={$filtros['locacion']}";
			else $criterios .= " AND c.fk_id_ubicacion={$filtros['locacion']}";
		}
		
		function gen_query($tabla,$tipo,$criterios,$filtros) {
			$query = "SELECT c.id, (SELECT url FROM imagenesxinmueble WHERE fk_id_inmueble = c.id AND tipo_inmueble = ".$tipo." AND orden = 1) 'url', c.calle, c.altura, c.informacion_adicional, c.tipo_cambio,";
			if ($filtros["cambio"]>0) {
				if ($filtros["cambio"]==1) $query .= "CASE c.tipo_cambio WHEN 2 THEN c.precio*(SELECT cambio FROM cambio) ELSE c.precio END as 'precio',";
				else $query .= "CASE c.tipo_cambio WHEN 1 THEN c.precio/(SELECT cambio FROM cambio) ELSE c.precio END as 'precio',";
			} else $query .= "c.precio,";
			$query .= "c.cantidad_ambientes, c.tipo_operacion, c.fecha_publicacion, u.nombre 'locacion', (SELECT nombre FROM ubicaciones WHERE id = u.pertenece_a) 'region' FROM ".$tabla." c, ubicaciones u WHERE c.fk_id_ubicacion = u.id ".$criterios." ORDER BY c.fecha_publicacion DESC;";
			return $query;
		}
		if ($filtros["tipo"]==0) {
			$querycampo = gen_query("campos",1,$criterios,$filtros);
			$querycasa = gen_query("casas",2,$criterios,$filtros);
			$querycochera = gen_query("cocheras",3,$criterios,$filtros);
			$querydeptos = "SELECT d.id, (SELECT url FROM imagenesxinmueble WHERE fk_id_inmueble = d.id AND tipo_inmueble = 4 AND orden = 1) 'url', c.calle,  c.altura, d.informacion_adicional, d.tipo_cambio,";
			if ($filtros["cambio"]>0) {
				if ($filtros["cambio"]==1) $querydeptos .= "CASE d.tipo_cambio WHEN 2 THEN d.precio*(SELECT cambio FROM cambio) ELSE d.precio END as 'precio',";
				else $querydeptos .= "CASE d.tipo_cambio WHEN 1 THEN d.precio/(SELECT cambio FROM cambio) ELSE d.precio END as 'precio',";
			 } else $querydeptos .= "d.precio,";
			$querydeptos .= "d.cantidad_ambientes, d.tipo_operacion, d.fecha_publicacion, u.nombre 'locacion', (SELECT nombre FROM ubicaciones WHERE id = u.pertenece_a) 'region' FROM departamentos d, ubicaciones u, edificios c WHERE c.fk_id_ubicacion = u.id AND d.fk_id_edificio = c.id ".$criterios." ORDER BY d.fecha_publicacion DESC;";
			$queryfondo_comercio = gen_query("fondo_comercios",6,$criterios,$filtros);
			$querygalpon = gen_query("galpones",7,$criterios,$filtros);
			$querylocal = gen_query("locales",8,$criterios,$filtros);
			$queryoficina = gen_query("oficinas",9,$criterios,$filtros);
			$queryph = gen_query("ph",10,$criterios,$filtros);
			$queryquinta = gen_query("quintas",11,$criterios,$filtros);
			$queryterreno = gen_query("terrenos",12,$criterios,$filtros);
			
			
			$arr_campos = datosNecesarios(0,$querycampo);
			$arr_casas = datosNecesarios(1,$querycasa);
			$arr_cocheras = datosNecesarios(2,$querycochera);
			$arr_deptos = datosNecesarios(3,$querydeptos);
			$arr_fondo_comercios = datosNecesarios(5,$queryfondo_comercio);
			$arr_galpones = datosNecesarios(6,$querygalpon);
			$arr_locales = datosNecesarios(7,$querylocal);
			$arr_oficinas = datosNecesarios(8,$queryoficina);
			$arr_phs = datosNecesarios(9,$queryph);
			$arr_quintas = datosNecesarios(10,$queryquinta);
			$arr_terrenos = datosNecesarios(11,$queryterreno);

			$propiedades = array_merge_recursive($arr_campos,$arr_casas,$arr_cocheras,$arr_deptos,$arr_fondo_comercios,$arr_galpones,$arr_locales,$arr_oficinas,$arr_phs,$arr_quintas,$arr_terrenos);
		} else {
			switch ($filtros["tipo"]) {
				case 1: $querycampo = gen_query("campos",1,$criterios,$filtros); $arr_campos = datosNecesarios(0,$querycampo); $propiedades = $arr_campos; break;
				case 2: $querycasa = gen_query("casas",2,$criterios,$filtros); $arr_casas = datosNecesarios(1,$querycasa); $propiedades = $arr_casas; break;
				case 3: $querycochera = gen_query("cocheras",3,$criterios,$filtros); $arr_cocheras = datosNecesarios(2,$querycochera); $propiedades = $arr_cocheras; break;
				case 6: $queryfondo_comercio = gen_query("fondo_comercios",6,$criterios); $arr_fondo_comercios = datosNecesarios(5,$queryfondo_comercio); $propiedades = $arr_fondo_comercios; break;
				case 7: $querygalpon = gen_query("galpones",7,$criterios,$filtros); $arr_galpones = datosNecesarios(6,$querygalpon); $propiedades = $arr_galpones; break;
				case 8: $querylocal = gen_query("locales",8,$criterios,$filtros); $arr_locales = datosNecesarios(7,$querylocal); $propiedades = $arr_locales; break;
				case 9: $queryoficina = gen_query("oficinas",9,$criterios,$filtros); $arr_oficinas = datosNecesarios(8,$queryoficina); $propiedades = $arr_oficinas; break;
				case 10: $queryph = gen_query("ph",10,$criterios,$filtros); $arr_phs = datosNecesarios(9,$queryph); $propiedades = $arr_phs; break;
				case 11: $queryquinta = gen_query("quintas",11,$criterios,$filtros); $arr_quintas = datosNecesarios(10,$queryquinta); $propiedades = $arr_quintas; break;
				case 12: $queryterreno = gen_query("terrenos",12,$criterios,$filtros); $arr_terrenos = datosNecesarios(11,$queryterreno); $propiedades = $arr_terrenos; break;
				case 4:
				 $find = array("c.tipo_operacion","c.precio","c.tipo_cambio"); $replace = array("d.tipo_operacion","d.precio","d.tipo_cambio"); 
				 $querydeptos = "SELECT d.id, (SELECT url FROM imagenesxinmueble WHERE fk_id_inmueble = d.id AND tipo_inmueble = 4 AND orden = 1) 'url', c.calle,  c.altura, d.informacion_adicional, d.tipo_cambio,";
				 if ($filtros["cambio"]>0) {
					if ($filtros["cambio"]==1) $querydeptos .= "CASE d.tipo_cambio WHEN 2 THEN d.precio*(SELECT cambio FROM cambio) ELSE d.precio END as 'precio',";
					else $querydeptos .= "CASE d.tipo_cambio WHEN 1 THEN d.precio/(SELECT cambio FROM cambio) ELSE d.precio END as 'precio',";
				 } else $querydeptos .= "d.precio,";
				 $querydeptos .= "d.cantidad_ambientes, d.tipo_operacion, d.fecha_publicacion, u.nombre 'locacion', (SELECT nombre FROM ubicaciones WHERE id = u.pertenece_a) 'region' FROM departamentos d, ubicaciones u, edificios c WHERE c.fk_id_ubicacion = u.id AND d.fk_id_edificio = c.id ".str_replace($find, $replace,$criterios)." ORDER BY d.fecha_publicacion DESC;";
				 $arr_deptos = datosNecesarios(3,$querydeptos); $propiedades = $arr_deptos; break;
			}
		}
		function cmp($a, $b) {
		    if ($a["fecha_publicacion"] == $b["fecha_publicacion"]) {
		        return 0;
		    }
		    return ($a["fecha_publicacion"] > $b["fecha_publicacion"]) ? -1 : 1;
		}
		
		usort($propiedades, "cmp");
		return $propiedades;
	}
}
?>
